package com.example.redisstudy;

import java.util.regex.Pattern;

public class OldPermanentResidencePermitValidator {

    // 15位永久居留证号码正则表达式
    private static final String ID_15_REGEX = "^[A-Z]{3}\\d{12}$";

    /**
     * 验证旧版永久居留证件号是否合法
     * @param idNumber 待验证的证件号
     * @param nationality 国籍缩写（大写字母）
     * @param birthDate 出生日期（格式：yyMMdd）
     * @return 校验结果，true 表示合法，false 表示不合法
     */
    public static String isValid(String idNumber, String nationality, String birthDate) {
        // 长度必须为15位
//        if (idNumber == null || idNumber.length() != 15) {
//            return "长度必须为15位";
//        }
//
        // 前三位必须是大写英文字母，表示国家或地区的英文缩写
        if (!Pattern.matches("[A-Z]{3}", idNumber.substring(0, 3))) {
            return "前三位必须是大写英文字母，表示国家或地区的英文缩写";
        }

        // 第四至第七位必须是数字，表示中国境内行政区划代码
//        if (!Pattern.matches("\\d{4}", idNumber.substring(3, 7))) {
//            return "第四至第七位必须是数字，表示中国境内行政区划代码";
//        }

        // 第八至第十三位必须是出生日期，格式为yyMMdd
        if (!idNumber.substring(7, 13).equals(birthDate)) {
            return "第八至第十三位必须是出生日期，格式为yyMMdd";
        }

        // 最后两位暂不校验

        // 格式必须符合规定的15位永久居留证号码格式
        if (!Pattern.matches("^[A-Z]{3}\\d{12}$", idNumber)) {
            return "格式必须符合规定的15位永久居留证号码格式";
        }

        // 若前三位和国籍不匹配，则提示不匹配
        if (!idNumber.substring(0, 3).equals(nationality)) {
            return "若前三位和国籍不匹配";
        }

        // 如果通过了以上校验规则，说明证件号合法
        return "true";
    }

    public static void main(String[] args) {
        // 测试持证人,为 1990年12月 31日出生的哈萨克斯坦籍人中第一位在北京市申领 2017版外国人永久居留身份证的男性,其证件号码为:KAZ110090123105。
        String idNumber1 = "KAZ110090123105";
        String idNumber2 = "KAZ110092123105";
        String bir ="1990-12-31";
        System.out.println(bir.replaceAll("-", "").substring(2));
        System.out.println(idNumber1.substring(7, 13));
        if (bir.replaceAll("-", "").substring(2).equals(idNumber1.substring(7, 13))) {
            System.out.println("ture");
        }
        //持证人,为 1990年12月 31日出生的哈萨克斯坦籍人中第一位在北京市申领 2017版外国人永久居留身份证的男性,其证件号码为:KAZ110090123105。
//        String idNumber2 = "KAZ110090123105";
        String nationality = "KAZ"; // 例：ABC 代表某国的国籍缩写
        String birthDate = "901231"; // 1986年3月1日

        System.out.println("证件号1合法性检验结果：" + isValid(idNumber1, nationality, birthDate));
//        System.out.println("证件号2合法性检验结果：" + isValid(idNumber2, nationality, birthDate));


    }
}
